애드 라운드 키
1. 개요
1. 개요
애드 라운드 키는 대칭키 블록 암호 알고리즘에서 각 암호화 라운드의 연산에 사용되는 부키이다. 이 키는 암호화 과정의 핵심 구성 요소로, 원본 암호 키로부터 키 확장 또는 키 스케줄이라는 과정을 통해 파생된다. 대표적인 알고리즘인 AES와 DES는 각각 고유한 키 확장 알고리즘을 통해 라운드 키를 생성한다.
애드 라운드 키의 주요 역할은 라운드 함수 내에서 평문 또는 중간 데이터와 XOR 연산을 수행하여 데이터를 혼합하는 것이다. 이 연산은 각 라운드마다 다른 키를 사용함으로써 암호의 확산과 혼돈 특성을 강화한다. AES에서는 초기 라운드 전과 각 라운드의 마지막 단계에서, DES에서는 파이스텔 네트워크의 각 라운드 함수에서 이 라운드 키가 적용된다.
라운드 키 생성 과정은 알고리즘의 보안성에 매우 중요하다. 키 확장 과정은 비선형 변환과 라운드 상수를 포함하여, 원본 키의 한 비트만 변경되어도 전혀 다른 라운드 키 세트가 생성되도록 설계된다. 이는 암호학적 공격, 특히 관계키 공격이나 차분 공격에 대한 저항성을 높이는 데 기여한다.
2. 역사와 배경
2. 역사와 배경
애드 라운드 키의 개념은 현대 블록 암호의 발전과 함께 정립되었다. 초기 블록 암호인 DES에서는 키 스케줄 과정을 통해 생성된 서브키가 각 라운드 함수의 입력으로 사용되었으며, 이는 라운드별로 다른 키를 적용함으로써 암호의 강도를 높이는 기본 아이디어를 보여준다. 이후 2001년 미국 국립표준기술연구소에 의해 표준으로 채택된 AES에서는 이 개념이 '애드 라운드 키'라는 명시적인 연산 단계로 체계화되었다. AES는 Feistel 구조가 아닌 SPN 구조를 채택하여 암호화와 복호화 과정이 상이하지만, 애드 라운드 키 연산은 두 과정 모두에서 핵심적인 역할을 한다.
애드 라운드 키의 역사적 배경은 단일 암호키의 반복 사용으로 인한 취약점을 해결하려는 시도에서 비롯된다. 동일한 키를 여러 라운드에 걸쳐 반복 사용하면 암호학적 공격에 노출될 위험이 증가한다. 따라서 마스터 키로부터 키 확장 알고리즘을 통해 각 라운드마다 고유한 라운드 키를 생성하고, 이를 평문 또는 중간 상태 값과 XOR 연산하는 애드 라운드 키 단계를 도입하였다. 이는 차분 암호 분석이나 선형 암호 분석과 같은 공격에 대한 내성을 강화하는 데 기여하였다. DES의 키 스케줄과 AES의 키 확장 알고리즘은 구체적인 방법은 다르지만, 라운드별 고유 키를 제공한다는 근본적인 목적을 공유한다.
3. 기본 원리
3. 기본 원리
3.1. 라운드 키의 역할
3.1. 라운드 키의 역할
라운드 키는 대칭키 블록 암호 알고리즘에서 각 암호화 라운드에 사용되는 부키이다. 이는 암호화 과정에서 반복적으로 적용되는 라운드 함수의 핵심 입력값으로 작용한다. 사용자가 입력한 하나의 마스터 키로부터 키 확장 또는 키 스케줄 과정을 통해 필요한 모든 라운드 키가 생성된다. AES와 DES를 포함한 대부분의 현대 블록 암호는 이 방식을 채택하고 있다.
라운드 키의 주요 역할은 각 라운드 연산에 고유한 키 자료를 제공하여 암호의 보안성을 강화하는 것이다. 만약 모든 라운드에서 동일한 키가 사용된다면, 암호문이 키와 평문의 단순한 함수가 되어 암호 해독이 쉬워질 수 있다. 따라서 키 확장 과정을 통해 생성된 서로 다른 라운드 키는 암호 알고리즘에 확산과 비선형성을 더한다. 특히 AES의 키 확장 알고리즘에서는 S-box 치환과 라운드 상수 덧셈을 통해, 원본 키의 한 비트만 변경되어도 전혀 다른 라운드 키들이 생성되도록 설계되었다.
또한 라운드 키는 암호화의 첫 단계와 마지막 단계에서 특별한 역할을 수행한다. AES에서는 초기 라운드 키를 평문과 XOR하는 애드 라운드 키 연산으로 암호화를 시작하며, 이는 키 화이트닝이라고도 불린다. 마지막 라운드에서도 동일한 연산이 적용되어 암호화 과정을 완료한다. DES와 같은 파이스텔 구조 암호에서는 라운드 키가 각 라운드 함수의 입력으로 사용되어 평문의 절반을 변환하는 데 기여한다.
3.2. 키 확장(Key Expansion) 과정
3.2. 키 확장(Key Expansion) 과정
키 확장 과정은 암호화 알고리즘의 핵심 마스터 키로부터 각 암호화 라운드에서 사용될 일련의 라운드 키를 생성하는 절차이다. 이 과정은 키 스케줄이라고도 불리며, 대칭키 암호 체계, 특히 AES와 DES 같은 블록 암호에서 필수적으로 수행된다. 주요 목적은 제한된 길이의 사용자 키를 확장하여 암호화 과정 전체에 필요한 충분한 양의 키 자료를 만들어내고, 각 라운드 키 간의 관계를 복잡하게 하여 암호문의 확산과 혼돈 성질을 강화하는 데 있다.
구체적인 과정은 알고리즘마다 상이하다. AES의 경우, 128, 192, 256비트 중 하나의 마스터 키를 입력받아 이를 워드 단위로 나눈 후, RotWord (순환 시프트), SubWord (S-박스 치환), 라운드 상수(Rcon)와의 XOR 연산, 그리고 이전 워드들 간의 XOR 연산을 반복적으로 적용하여 필요한 수의 라운드 키를 생성한다. 예를 들어, 10라운드를 사용하는 AES-128은 초기 4개의 워드로부터 총 44개의 워드(11개의 128비트 라운드 키)를 만들어낸다. 반면, DES의 키 확장은 64비트 키에서 8비트의 패리티 비트를 제거한 56비트를 PC-1 치환을 통해 두 개의 28비트 블록으로 나누고, 라운드마다 정해진 횟수만큼 좌측 순환 시프트를 적용한 후, PC-2 치환을 통해 48비트의 라운드 키를 추출하는 방식으로 진행된다.
이러한 키 확장 과정의 설계는 몇 가지 중요한 보안 목표를 달성한다. 첫째, 과정에 비선형성 연산(예: AES의 SubWord)을 포함시켜 공격자가 일부 라운드 키를 획득하더라도 마스터 키나 다른 라운드 키를 쉽게 유추할 수 없도록 한다. 둘째, 완전성을 제공하여 마스터 키의 한 비트가 변경되면 생성되는 모든 라운드 키에 광범위한 변화가 전파되도록 한다. 셋째, 라운드 상수를 사용함으로써 라운드 키 간의 대칭성을 제거하고, 동일한 키가 반복되어 나타나는 것을 방지한다. 결과적으로 키 확장 과정은 암호 알고리즘의 전반적인 암호학적 안전성을 확보하는 데 결정적인 역할을 수행한다.
4. AES의 애드 라운드 키
4. AES의 애드 라운드 키
4.1. AES 키 확장 알고리즘
4.1. AES 키 확장 알고리즘
AES 키 확장 알고리즘은 AES 암호화 과정에서 필요한 라운드 키를 원본 암호화 키로부터 생성하는 절차이다. 이 과정은 키 스케줄 또는 키 확장이라고 불리며, 하나의 마스터 키를 각 암호화 라운드에서 사용할 여러 개의 서로 다른 부키로 변환하는 역할을 한다.
AES-128, AES-192, AES-256에 따라 세부 과정이 약간 다르지만, 기본 원리는 유사하다. 공통적으로 키 확장은 워드 단위로 이루어지며, S-Box를 이용한 비선형성 변환과 라운드 상수를 이용한 XOR 연산이 포함된다. 예를 들어, AES-128은 128비트(16바이트)의 원본 키를 4바이트씩 나눈 4개의 워드로 시작하여, 총 44개의 워드(11개의 라운드 키)를 생성한다. 생성 규칙은 현재 인덱스가 4의 배수일 경우 RotWord와 SubWord 연산을 적용하고 라운드 상수와 XOR하며, 그 외의 경우에는 간단히 이전 워드들과 XOR 연산을 통해 새로운 워드를 만든다.
키 종류 | 초기 워드 수 (Nk) | 생성할 총 워드 수 | 라운드 수 (Nr) | 주요 생성 규칙 |
|---|---|---|---|---|
AES-128 | 4 | 44 | 10 | i가 4의 배수: 특수 변환 후 XOR |
AES-192 | 6 | 52 | 12 | i가 6의 배수: 특수 변환 후 XOR |
AES-256 | 8 | 60 | 14 | i가 8의 배수: 특수 변환 후 XOR, i가 4의 배수일 때 추가 SubWord |
이 키 확장 과정의 핵심 의의는 높은 보안성을 확보하는 데 있다. 암호학적 관점에서, 이 과정은 완전 비밀성을 제공하지는 않지만, 차분 공격이나 선형 공격과 같은 암호 분석을 어렵게 만든다. 원본 키의 한 비트만 변경되어도 키 확장 알고리즘을 거치면 빠르게 전혀 다른 라운드 키들이 생성되어 높은 확산 효과를 보인다. 또한, 라운드 상수의 도입은 키들 간의 대칭성을 깨뜨리고, 취약한 키가 존재하지 않도록 설계되었다.
4.2. 라운드 키 적용 단계
4.2. 라운드 키 적용 단계
애드 라운드 키 연산은 AES와 같은 블록 암호 알고리즘에서 각 라운드의 시작 또는 끝에 라운드 키를 상태 행렬과 결합하는 단계이다. 이 연산은 XOR 비트 연산을 기반으로 하며, 암호화와 복호화 과정에서 동일하게 적용된다. 애드 라운드 키의 주요 역할은 각 라운드에 사용되는 부키를 데이터에 혼합함으로써 암호의 확산성을 높이고, 키 의존성을 강화하는 것이다.
구체적인 적용 단계를 살펴보면, 키 확장 과정을 통해 생성된 라운드 키 배열이 준비된다. AES-128의 경우 총 11개의 128비트 라운드 키가 생성된다. 암호화 과정에서는 첫 번째 라운드 전에 초기 애드 라운드 키 연산이 수행되어 평문 블록과 첫 번째 라운드 키가 XOR된다. 이후 1라운드부터 9라운드(마지막 직전 라운드)까지는 각 라운드의 믹스 컬럼 연산 이후에 해당 라운드의 키가 적용된다. 마지막 10라운드에서는 믹스 컬럼 단계를 생략하고 애드 라운드 키 연산을 수행하여 최종 암호문을 완성한다.
복호화 과정에서는 암호화의 역순으로 라운드 키가 적용된다. 복호화 알고리즘은 인버스 믹스 컬럼과 인버스 애드 라운드 키 연산의 순서가 암호화와 다르게 배열되어 있지만, 핵심적인 애드 라운드 키 연산 자체는 동일한 XOR 방식을 유지한다. 이처럼 애드 라운드 키는 알고리즘의 전체 라운드 구조에 걸쳐 키 자료를 지속적으로 주입하는 핵심 단계로 기능한다.
DES를 비롯한 다른 파이스텔 네트워크 구조의 암호에서도 유사한 개념의 라운드 함수 적용이 존재하지만, AES의 애드 라운드 키는 그 단순성과 효율성으로 인해 하드웨어 구현과 소프트웨어 구현 모두에서 최적화되도록 설계되었다. 이 연산은 암호학적 안전성을 제공하는 여러 변환 단계들 사이에서 키와 평문 간의 관계를 복잡하게 만드는 데 기여한다.
5. DES의 키 스케줄
5. DES의 키 스케줄
5.1. PC-1 및 PC-2 치환
5.1. PC-1 및 PC-2 치환
PC-1 및 PC-2 치환은 DES 암호 알고리즘의 키 스케줄 과정에서 라운드 키를 생성하기 위해 사용되는 두 단계의 치환 연산이다. DES는 64비트의 키를 입력받지만, 실제로는 8비트의 패리티 비트를 제외한 56비트만 암호화에 사용된다. PC-1(Permuted Choice 1)은 이 64비트 입력 키에서 8개의 패리티 비트를 제거하고, 나머지 56비트를 선택하여 두 개의 28비트 블록(좌반부 C0, 우반부 D0)으로 나누는 역할을 한다. 이 과정을 통해 실제 암호 연산에 사용될 키의 길이가 결정된다.
PC-1을 거쳐 생성된 두 개의 28비트 블록(Ci, Di)은 각 라운드마다 정해진 횟수만큼 왼쪽 순환 시프트를 수행한다. 이후, PC-2(Permuted Choice 2) 치환이 적용된다. PC-2는 순환 시프트된 두 28비트 블록(총 56비트)을 입력받아, 그중에서 특정 48비트를 선택적으로 추출하여 해당 라운드에 사용될 48비트 라운드 키를 생성한다. 각 라운드마다 서로 다른 라운드 키를 생성하기 위해 순환 시프트가 선행되는 이유는, 매 라운드마다 PC-2에 입력되는 비트 열이 달라지도록 하여 강력한 확산 효과를 얻기 위함이다.
연산 | 입력 비트 수 | 출력 비트 수 | 주요 역할 |
|---|---|---|---|
PC-1 | 64비트 | 56비트 | 패리티 비트 제거 및 28비트 블록 2개 생성 |
PC-2 | 56비트 | 48비트 | 해당 라운드의 48비트 서브키 생성 |
이러한 PC-1과 PC-2 치환 테이블은 고정되어 있으며, 암호학적 설계를 통해 각 비트가 여러 라운드 키 생성에 고르게 관여하도록 배치되었다. 결과적으로 DES의 키 스케줄은 비교적 간단한 순열과 시프트 연산만으로 구성되어 있지만, AES의 키 확장 알고리즘과는 달리 S-Box 같은 비선형 변환을 포함하지는 않는다. 이는 DES와 AES의 키 확장 메커니즘의 주요 차이점 중 하나이다.
5.2. 라운드 키 생성 과정
5.2. 라운드 키 생성 과정
라운드 키 생성 과정은 키 확장 또는 키 스케줄이라고 불리며, 사용자가 입력한 마스터 키로부터 각 라운드에서 사용할 부키를 생성하는 절차이다. 이 과정은 대칭키 암호의 핵심 설계 요소로, 동일한 키를 반복 사용하는 것을 방지하고 암호학적 강도를 높이는 역할을 한다.
구체적인 생성 방식은 알고리즘마다 다르다. AES에서는 키 확장 과정을 통해 초기 128, 192, 또는 256비트 키를 확장하여 라운드 수보다 하나 많은 개수의 라운드 키를 생성한다. 예를 들어 AES-128은 10라운드를 수행하므로 총 11개의 128비트 라운드 키가 필요하다. 생성은 워드 단위로 이루어지며, RotWord, SubWord 연산과 라운드 상수와의 XOR 연산을 조합하여 이전 라운드 키로부터 다음 라운드 키를 비선형적으로 도출한다. 이는 두 키가 단 한 비트만 달라도 전혀 다른 라운드 키가 생성되는 확산 효과를 낸다.
반면 DES의 키 스케줄은 다른 방식을 사용한다. 64비트 키에서 패리티 비트를 제거한 56비트 실제 키를 PC-1 치환을 통해 두 개의 28비트 블록으로 나눈다. 이후 각 라운드마다 정해진 횟수(1회 또는 2회)만큼 순환 시프트를 적용한 후, PC-2 치환을 통해 48비트의 라운드 키를 생성한다. 이 과정에서 각 28비트 블록의 비트는 대부분 14개 이상의 서로 다른 라운드 키 생성에 사용되어 키 자료의 효율적 활용을 보장한다.
이러한 생성 과정의 공통 목적은 각 라운드에 독립적이고 예측 불가능한 부키를 제공하여, 공격자가 하나의 라운드 키를 알아내도 마스터 키나 다른 라운드 키를 유추하기 어렵게 만드는 것이다. 이는 차분 공격이나 선형 공격과 같은 암호 해독 기법에 대한 저항성을 부여하는 데 기여한다.
6. 다른 암호 알고리즘과의 비교
6. 다른 암호 알고리즘과의 비교
애드 라운드 키는 대칭키 암호 방식의 블록 암호 알고리즘에서 필수적인 요소이다. AES와 DES는 모두 라운드 키를 사용하지만, 이를 생성하고 적용하는 방식에서 뚜렷한 차이를 보인다. 이는 각 알고리즘의 설계 철학과 구조적 차이에서 기인한다.
AES의 키 확장 과정은 키 확장이라는 단일 과정을 통해 마스터 키로부터 모든 라운드 키를 생성한다. 이 과정에는 S-box를 이용한 비선형 변환과 라운드 상수의 XOR 연산이 포함되어, 각 라운드 키 사이에 높은 독립성과 확산 효과를 부여한다. 반면, DES의 키 스케줄은 PC-1과 PC-2라는 두 번의 치환 선택과 좌우 28비트 블록의 순환 시프트를 반복하는 선형적 과정에 가깝다. DES는 파이스텔 구조를 채택하여 암호화와 복호화에 동일한 키 스케줄을 사용할 수 있도록 설계되었다.
결과적으로 AES의 라운드 키는 더 복잡한 비선형 과정을 거쳐 생성되므로, 부분 키 노출에 대한 저항성이 강하다고 평가된다. DES의 라운드 키 생성은 상대적으로 단순하며, 56비트 키의 짧은 길이와 함께 알고리즘의 취약점 중 하나로 지적된다. 이러한 차이는 현대 암호학에서 AES가 DES를 대체하는 주요 이유 중 하나를 제공한다.
7. 보안성과 중요성
7. 보안성과 중요성
애드 라운드 키의 보안성은 암호 알고리즘 전체의 안전성을 지탱하는 핵심 요소이다. 이는 단순히 암호화 과정에 키를 반복적으로 섞는 역할을 넘어서, 암호학적 공격에 대한 저항성을 높이는 중요한 설계 원칙을 구현한다. 특히 AES와 DES 같은 현대 블록 암호는 키 확장 과정을 통해 생성된 라운드 키를 사용함으로써 암호학적 안전성을 확보한다.
라운드 키의 보안적 중요성은 몇 가지 주요 원칙에서 비롯된다. 첫째는 확산과 혼돈의 원칙이다. 키 확장 알고리즘은 원본 마스터 키의 한 비트 변화가 여러 라운드의 서로 다른 라운드 키에 영향을 미치도록 설계되어, 암호문의 작은 변화가 평문 전체에 걸쳐 광범위하게 퍼지도록 한다. 둘째는 비선형성 도입이다. AES의 키 확장 과정에는 S-box 치환이 포함되어 있어, 공격자가 일부 라운드 키를 알아내더라도 나머지 키나 마스터 키를 쉽게 유추할 수 없게 만든다. 셋째는 대칭성 제거이다. AES의 라운드 상수(Rcon)와 같은 요소는 키 확장 과정에서 발생할 수 있는 규칙적인 패턴을 깨뜨려, 취약한 키가 생성되는 것을 방지한다.
보안 속성 | 구현 방식 | 목적 |
|---|---|---|
확산 | 키 확장 시 이전 라운드 키를 재사용/변형 | 마스터 키의 국부적 변화가 전체 라운드 키에 확산 |
비선형성 | S-box 치환(SubWord) 적용 | 라운드 키 간의 선형 관계 차단 |
대칭성 제거 | 라운드 상수(Rcon) XOR 연산 | 키 확장 과정의 예측 가능성 제거 |
결론적으로, 애드 라운드 키는 단순한 부재료가 아니라 암호 시스템의 구조적 강도를 결정하는 핵심 부품이다. 잘 설계된 키 확장 과정은 차분 공격, 선형 공격과 같은 다양한 암호 분석 기법에 대한 저항성을 제공하며, 이는 AES가 현재까지도 광범위하게 신뢰받는 표준 암호로 자리 잡는 데 기여한 핵심 요소 중 하나이다.
